Skip to content

feat(release): package the built binary as a named artifact (epic 005 T010) - #53

Merged
rsenna merged 2 commits into
mainfrom
005-t010-package-artifact
Aug 13, 2026
Merged

feat(release): package the built binary as a named artifact (epic 005 T010)#53
rsenna merged 2 commits into
mainfrom
005-t010-package-artifact

Conversation

@owkwo-bot

@owkwo-bot owkwo-bot commented Aug 13, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Packages the release binary in release.yml (epic 005, Phase 4 US2, T010): copies target/release/iklo to dist/iklo-${GITHUB_REF_NAME}-x86_64-unknown-linux-gnu.
  • Deliberately does not create or upload to a GitHub Release — per plan.md's Key Design Decision docs(ADR-0001): 2026-07 status note — Turso blockers hold, appetite shifts #7, the Release is created once, atomically, in T012 after build+test (T009), this packaging (T010), checksums (T011), and release notes (T014) all succeed.
  • Single platform for now (ubuntu-latest / x86_64-unknown-linux-gnu), per spec.md's Assumptions.

Test plan

  • YAML parses (Ruby Psych)
  • Built the release binary locally, ran the exact packaging commands from the workflow (GITHUB_REF_NAME=v0.1.0 standing in for the real tag-push value) — staged file present, executable, correctly named
  • Self-review (pr-review-toolkit:code-reviewer): confirmed ${GITHUB_REF_NAME} usage is safe (plain env-var expansion, doubly-guarded by the tag trigger glob and validate-release-tag.sh's strict regex before this step ever runs), confirmed cp preserves the exec bit on the runner's default umask, confirmed no dist/ collision — no blocking issues; added /dist/ to .gitignore per its one actionable nit
  • make build / make test green

🧙 Built with WOZCODE

Summary by Sourcery

Stage the built release binary as a named artifact in the release workflow and mark the corresponding CI-release task as completed.

New Features:

  • Add packaging step in the release workflow to copy the built iklo binary into a dist/ directory with a target-triple-based filename.

Enhancements:

  • Update CI-release versioning specs to document and mark the T010 packaging task as completed, including behavior and verification notes.

Chores:

  • Ignore the dist/ directory in version control via .gitignore.

Summary by cubic

Stages the built iklo CLI as a tagged, target-triple-named artifact in release.yml for downstream checksums (T011) and atomic release creation (T012). Previously no artifact was staged; we now copy target/release/iklo to dist/iklo-${GITHUB_REF_NAME}-x86_64-unknown-linux-gnu, and ignore dist/ in .gitignore.

Review notes

  • Fulfills epic 005 T010 for x86_64-unknown-linux-gnu.
  • Clarifies scope in specs/005-ci-release-versioning/tasks.md: T010 is staging-only; FR-003 maps to T010 and T012.
  • Does not create or upload a GitHub Release; T012 will do so.
  • No migration; downstream steps must read artifacts from dist/.

Written for commit 0c68c34. Summary will update on new commits.

Review in cubic

… T010)

Stages target/release/iklo as dist/iklo-<tag>-x86_64-unknown-linux-gnu
for T011 (checksums) and T012 (atomic release creation) to consume.
Per plan.md's Key Design Decision #7, this step only stages the
artifact -- it does not create or upload to a GitHub Release.

Self-review (pr-review-toolkit:code-reviewer) found no blocking
issues; added dist/ to .gitignore per its one actionable nit.

Co-authored-by: Claude <noreply@anthropic.com>

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your trial has ended. Reactivate Greptile to resume code reviews.

@sourcery-ai

sourcery-ai Bot commented Aug 13, 2026

Copy link
Copy Markdown

Reviewer's Guide

This PR updates the release workflow to stage the built CLI binary as a named artifact in a dist/ directory for later checksum and release creation steps, marks the corresponding spec task as completed with implementation notes, and ignores the generated dist/ directory in version control.

Sequence diagram for updated release packaging workflow

sequenceDiagram
  actor Developer
  participant GitHubActions
  participant ReleaseWorkflow
  participant DistDirectory
  participant ChecksumWorkflow
  participant ReleaseCreationWorkflow

  Developer->>GitHubActions: push tag with valid GITHUB_REF_NAME
  GitHubActions->>ReleaseWorkflow: trigger release.yml

  ReleaseWorkflow->>ReleaseWorkflow: cargo build --release -p iklo-cli --locked

  ReleaseWorkflow->>DistDirectory: mkdir -p dist
  ReleaseWorkflow->>DistDirectory: cp target/release/iklo dist/iklo-${GITHUB_REF_NAME}-${TARGET}

  ChecksumWorkflow->>DistDirectory: read iklo-${GITHUB_REF_NAME}-${TARGET}
  ReleaseCreationWorkflow->>DistDirectory: attach iklo-${GITHUB_REF_NAME}-${TARGET} to Release
Loading

File-Level Changes

Change Details Files
Stage the built release binary as a versioned, target-triple-named artifact in the release workflow for downstream steps.
  • Add a new job step to package the built iklo release binary after cargo build completes.
  • Set a TARGET environment variable to x86_64-unknown-linux-gnu within the step to control the artifact naming.
  • Create a dist directory on the runner and copy target/release/iklo into it with a name including GITHUB_REF_NAME and TARGET.
.github/workflows/release.yml
Update the CI release/versioning spec to mark T010 as done and document how the packaging behavior is implemented and verified.
  • Change the T010 checklist item from unchecked to checked to reflect completion.
  • Describe the packaging path and filename pattern used in the workflow and clarify that this step only stages the artifact, deferring GitHub Release creation to a later task.
  • Add notes about local verification of the packaging commands and constraints such as single-platform support per current assumptions.
specs/005-ci-release-versioning/tasks.md
Exclude the generated dist directory from version control to avoid committing staged release artifacts.
  • Add the dist/ directory to the gitignore configuration so packaged artifacts are not tracked.
.gitignore

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@coderabbitai

coderabbitai Bot commented Aug 13, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@rsenna, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 43 minutes

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: b3763028-7a50-4606-abd8-f6b494d39e36

📥 Commits

Reviewing files that changed from the base of the PR and between 92d43c2 and 0c68c34.

📒 Files selected for processing (3)
  • .github/workflows/release.yml
  • .gitignore
  • specs/005-ci-release-versioning/tasks.md

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - I've reviewed your changes and they look great!


Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

@codacy-production

Copy link
Copy Markdown

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All reported issues were addressed across 3 files

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

Comment thread specs/005-ci-release-versioning/tasks.md Outdated
cubic-dev-ai: T010's title/scope promised "upload...as a GitHub
Release asset", but the done-note only confirms staging; the actual
upload happens in T012's atomic release-creation call by design
(plan.md's Key Design Decision #7). Reworded the checked-off task so
its scope matches what shipped, and added T012 to FR-003's
traceability row since that's where the upload half actually lands.

Co-authored-by: Claude <noreply@anthropic.com>
@rsenna
rsenna merged commit e4d30df into main Aug 13, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants